<?php
Prado::using('Application.models.articulo');
Prado::using('Application.models.marca');
Prado::using('Application.models.categoria');
Prado::using('Application.models.moneda');
Prado::using('System.Web.UI.ActiveControls.*');

class NewArticulo extends TPage
{
    private $_data_tipodoc = null;
    private $CodigoArticulo = null;    
    private $_data=null;

    private function sqlmap_Moneda()
    {
        return $this->Application->getModule('SQLMap_MONEDAS')->getClient();
    }		    
    
    private function sqlmap_Marca()
    {
        return $this->Application->getModule('SQLMap_MARCAS')->getClient();
    }		    

    private function sqlmap_Categoria()
    {
        return $this->Application->getModule('SQLMap_CATEGORIAS')->getClient();
    }		    

    private function sqlmap_Articulo()
    {
        return $this->Application->getModule('SQLMap_ARTICULOS')->getClient();
    }		    

    public function onLoad($param)
    {
        parent::onLoad($param);
        if(!$this->IsPostBack)
        {
          $sqlmapMarca = $this->sqlmap_Marca();
          $sqlmapCategoria = $this->sqlmap_Categoria();
          $sqlmapMonedas = $this->sqlmap_Moneda();
          
          $this->Marca->DataTextField='nom_marca';
          $this->Marca->DataValueField='cod_marca';
          $this->Marca->DataSource = $sqlmapMarca->queryForList('SelectMarcas');
          $this->Marca->dataBind();

          $this->Moneda->DataTextField='nom_moneda';
          $this->Moneda->DataValueField='cod_moneda';
          $this->Moneda->DataSource = $sqlmapMonedas->queryForList('SelectMonedas');
          $this->Moneda->dataBind();

          $this->Categoria->DataTextField='nom_categoria';
          $this->Categoria->DataValueField='cod_categoria';
          $this->Categoria->DataSource = $sqlmapCategoria->queryForList('SelectCategorias');
          $this->Categoria->dataBind();

          $this->CodigoArticulo =  rtrim(ltrim($_GET['CODIGO_ARTICULO'])); 
          if ($this->CodigoArticulo === "-1")
            {
              $this->TxtCod_Articulo->Text    = "";        
              $this->TxtCod_Articulo->Enabled = "true"; 
              $this->Limpiar_Articulo();                             
            }
          else
            { 
              $this->lbTituloGrid->Text = 'Modificar datos de Articulo';                           
              $edit_articulo =  $this->sqlmap_Articulo()->queryForObject("SelectArticulo",$this->CodigoArticulo);              
              $this->TxtCod_Articulo->Text      = $edit_articulo->cod_articulo;
              $this->TxtCod_Articulo->Enabled   = "false";              
              $this->TxtNom_Articulo->Text      = $edit_articulo->nom_articulo;
              $this->Marca->SelectedValue       = $edit_articulo->cod_marca;
              $this->Moneda->SelectedValue      = $edit_articulo->cod_moneda;                            
              $this->Categoria->SelectedValue   = $edit_articulo->cod_categoria;
              $this->TxtMax_Dscto_Venta->Text   = $edit_articulo->max_dscto_venta;
              $this->TxtPrecio_Lista->Text      = $edit_articulo->precio_lista;
              $this->TxtDscto_Proveedor->Text   = $edit_articulo->dscto_proveedor;
              $this->TxtPrecio_Compra->Text     = $edit_articulo->precio_compra;
              $this->TxtPrecio_Venta->Text      = $edit_articulo->precio_venta;
              $this->TxtUtilidad->Text          = $edit_articulo->utilidad;                                                                      
            }        
        }                
    }

    public function Calcular_Compra()
    {
      $preciolista  = floatval($this->TxtPrecio_Lista->Text);
      $descuento    = floatval($this->TxtDscto_Proveedor->Text) / 100; 
      $utilidad     = floatval($this->TxtUtilidad->Text) / 100;
      $preciocompra = $preciolista - ($preciolista * $descuento);
      $precioventa  = $preciocompra+ ($preciocompra * $utilidad);      
      $this->TxtPrecio_Compra->Text = $preciocompra;
      $this->TxtPrecio_Venta->Text  = $precioventa; 
      
    }
  
    public function Limpiar_Articulo()
    { 
        $this->TxtCod_Articulo->Text      = "";
        $this->TxtNom_Articulo->Text      = "";
        $this->Marca->SelectedValue       = "";             
        $this->Categoria->SelectedValue   = "";
        $this->TxtMax_Dscto_Venta->Text   = "0";
        $this->TxtPrecio_Lista->Text      = "0";
        $this->TxtDscto_Proveedor->Text   = "0";
        $this->TxtPrecio_Compra->Text     = "0";
        $this->TxtPrecio_Venta->Text      = "0";
        $this->TxtUtilidad->Text          = "0";                                                                      
    }
  
    public function Grabar_Articulo($sender, $param)    
    {        
        $this->CodigoArticulo =  rtrim(ltrim($_GET['CODIGO_ARTICULO']));    
        $new_articulo = new articulo();
        $new_articulo->cod_articulo     = $this->TxtCod_Articulo->Text;;
        $new_articulo->nom_articulo     = $this->TxtNom_Articulo->Text;        
        $new_articulo->cod_marca        = $this->Marca->SelectedValue;
        $new_articulo->cod_moneda       = $this->Moneda->SelectedValue;        
        $new_articulo->cod_categoria    = $this->Categoria->SelectedValue;
        $new_articulo->max_dscto_venta  = $this->TxtMax_Dscto_Venta->Text;
        $new_articulo->precio_lista     = $this->TxtPrecio_Lista->Text;
        $new_articulo->dscto_proveedor  = $this->TxtDscto_Proveedor->Text;        
        $new_articulo->precio_compra    = $this->TxtPrecio_Compra->Text;        
        $new_articulo->precio_venta     = $this->TxtPrecio_Venta->Text;                                                                
        $new_articulo->utilidad         = $this->TxtUtilidad->Text;
                                
        if ($this->CodigoArticulo === "-1")
          {                     
            $sql_count_articulo = $this->sqlmap_Articulo();
            $count_articulo = $sql_count_articulo->queryForObject('SelectCountArticulo', $new_articulo->cod_articulo); 
            if ($count_articulo === 0)
              {                                                                                                    
                $this->sqlmap_Articulo()->insert("InsertArticulo", $new_articulo);
                $this->Limpiar_Articulo();
                $this->Validador->Text = 'Se ingreso un nuevo registro';
                $this->Limpiar_Articulo();                
              }
            else
              {
                $this->Validador->Text = 'El codigo '.$new_articulo->cod_articulo.' ya existe en la base de datos, verificar...';                
              }              
          }
        else
          {
            $this->sqlmap_Articulo()->update("UpdateArticulo", $new_articulo);
            $this->Validador->Text = 'Se actualizaron los datos con exito';            
          }
      
    }

    public function Back_Page($sender, $param)
    {
      $this->Validador->Text = ' mmmmmmmmmm '; 
      $this->Response->redirect('VPersona.page');
    }
 
}

?>